package com.malou.server.seguridad.login;

import javax.servlet.http.HttpSession;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.malou.client.seguridad.login.LoginService;
import com.malou.client.seguridad.usuario.Usuario;
import com.malou.server.pagos.pagoletras.Letras;
import com.malou.server.seguridad.usuario.Usuarios;


public class LoginServiceImpl  extends RemoteServiceServlet implements
LoginService{
	
	private static final long serialVersionUID = 1L;

	@Override
	public Usuario isValidLogin(Usuario tda) {
		Usuario valor = null;		
				
		valor = Usuarios.validarResponsable(tda);
		
		if(valor != null)
		if(!valor.getErr()){
			
			
			HttpSession httpSession = getThreadLocalRequest().getSession();  
		    httpSession.setAttribute("username", tda.getUsuario()); 
		    Boolean activado = Letras.getActivar();
		    if(!activado){
		    	valor.setErrMsg("Debe activar su sistema...");
		    	valor.setErr(true);
		    }
		    //Usuario user = getUsuarioSession();
		    //CometSession cometSession = CometServlet.getCometSession(httpSession);		
			//ModeloPrendas.users.putIfAbsent(user.getUsuario(), cometSession);
		}
		
		return valor;
	}

	@Override
	public Usuario getUsuarioSession() {
		HttpSession session = getThreadLocalRequest().getSession();
		 
		
		if (session.getAttribute("username") != null){
			String username = (String) session.getAttribute("username");
			Usuario user = Usuarios.getResponsable(username);
			
			Boolean activado = Letras.getActivar();
		    if(!activado){
		    	user.setErrMsg("Debe activar su sistema");
		    	user.setErr(true);
		    }
			return user;  
	    }else{
	    	return null;
	    }
	}

	@Override
	public Boolean logout() {
		Boolean retorno = true;
		try{
			HttpSession httpSession = getThreadLocalRequest().getSession(false);  
		    //httpSession.setAttribute("username", null);
			
			//CometSession cometSession = CometServlet.getCometSession(httpSession, false);
			//Usuario user = getUsuarioSession();
			//ModeloPrendas.users.remove(user.getUsuario(), cometSession);
			
			httpSession.invalidate();
		}catch(Exception e){
			retorno = false;
		}
		
		return retorno;
	}
}
